home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD ROM Paradise Collection 4
/
CD ROM Paradise Collection 4 1995 Nov.iso
/
win
/
tech.zip
/
TECHNICL.DOC
< prev
Wrap
Text File
|
1991-01-28
|
69KB
|
2,283 lines
THE DRIVER CREATOR WINDOW
=========================
The Driver Creator Window is used to create new drivers for the
Driver List Window.
The drivers provide complete control for receiving and
transmitting System Exclusive information from virtually every
instrument. The driver also includes the information necessary to
audition patches and perform bank editing where appropriate.
WARNING: To use this window effectively it is necessary to be
able to read and understand the System Exclusive implementation
charts for your instrument. Also it is necessary to be able to
work in the hexadecimal numbering system when entering SysX
information that is sent to the instrument.
If you are just learning about creating drivers, we strongly
suggest that you obtain System Exclusive documentation for an
instrument which Sound Quest is already supporting with Drivers.
Load the existing Sound Quest Driver into the Driver Creator
Window and compare the documentation with what is entered in this
window. If you use one of our drivers as an example, and use the
manufacturers documentation as you work through this chapter, you
should find it much easier becoming comfortable in obtaining the
kind of information necessary to create a Driver.
PC/XT/AT/PS2
------------
In order to save memory it has been necessary to put the Driver
Creator Window into a separate program called DRVCREAT.EXE. On a
hard drive system this program will be installed in the MIDI
QUEST directory. On a floppy only system, this program is found
on Disk #2.
TO OPEN THE DRIVER CREATOR WINDOW:
1. Save whatever data you have loaded in MIDI QUEST
2. Quit to program
3. Insert Disk #2 on a floppy system
4. Execute METASHEL /i<RETURN>
5. Execute DRVCREAT <RETURN>
6. Move mouse to screen top and display menus
7. Display the "Windows" menu and select "Driver Window"
8. The Driver Creator Window will be displayed
NOTE: If this is the first time running the program you will be
prompted to enter the identical information as was requested when
MIDI QUEST was first started (graphics adaptor and MPU interrupt
number). See the "Getting Started" section of the manual if a
refresher is needed.
MAC, AMIGA, ATARI ST
--------------------
TO OPEN THE DRIVER CREATOR WINDOW:
1. Bring down the "Utilities" menu
2. Select "Driver Creator Window" (option 9)
Entering Information
--------------------
When entering information in this window take care to:
1. ALWAYS press the RETURN/ENTER key after each line or data may
not be entered properly.
2. Most numeric information is entered in decimal EXCEPT
3. Enter MIDI strings in hexidecimal format. ( including Dump
Request )
4. Numbers type is indicated by the ending (in this manual):
H = Hexidecimal (eg. 30H)
D = Decimal (eg. 4104D)
Note : H and D are NOT entered in the window!
Using the Driver Creator Window
-------------------------------
In order to create a new driver it is necessary to fill in all of
the information in active areas (the areas in which a cursor will
appear when the parameter is clicked on). The window is divided
into nine sections. Each section will be discussed separately
with examples of when the section will be used.
GENERAL
-------
It is ALWAYS necessary to enter General information.
Make: the manufacturer and instrument (eg. Roland D-10)
Model: the type of data (eg. Tone)
Defn: where the editing template is stored for the data
(eg. D-10/Tone.sqt)
1) this should be left blank unless a template is available to
edit the data
2) this contains the path and a file name to the data file's
template. It is appended to the path set by the "Options" menu
selection "Set Template Path" to load the editing template.
3) look in the subdirectory structures on your disk where the
templates are stored to see how template files are organized.
Company the company's SysX ID number (in hexidecimal)
ID#: (eg. Roland = 41H, Yamaha = 43H, Korg = 40H)
this is byte 2 of a SysX dump.
FileSize: the amount of memory to be allocated for the data
(eg. 246D)
if the data is of variable size it MUST be
the MAXIMUM size
Header the number of bytes before the first byte of data
Size: (eg. 6D)
used during editing
used to move patches in and out of banks
(ie copying starts at this offset)
NOTE: can be left as 0D if neither above option
is used
Template Value to be placed in Variable 40 for patch edit
V40: set to 0D unless needed for template control
Storage the format in which the data transmitted
Format: enter (0 - 6) (0 default and most common)
0) 7-bit format
1) Nibble format where 8 bits are sent as
two 4 bit nibbles
(ie HHHHLLLL -> 0000LLLL 0000HHHH)
Low nibble sent first
2) Korg M1 packed format
used by M1, M3R, T1-2-3
takes 7 8-bit bytes
strips the top bit of each to make
a new byte
sends 8 bytes (new byte first)
3) TX802 format
hopefully never to be used again
4) DX7II/TX802 fractional scaling
nibblized and OR'd with 30H.
5) 14-bit word divided into two bytes
6) Reverse nibble format
two 4 bit nibbles - high nibble first
(ie HHHHLLLL -> 0000HHHH 0000LLLL)
7) Alesis HR-16 Format
7 -> 8 byte storage format
8) Ensoniq VFX Performance format
Inverted Reverse nibble byte format
F7 End: Toggle 'Yes' or 'No' whether data ends with F7H
almost always 'Yes'
Fixed Toggle 'Yes' or 'No' whether data length is
Length: constant. This is almost always 'Yes'
except for Sequence dumps which vary in
size.
I/O Mode: Whether a Macro is used for Receive/Transmit
Sgl - Single Mode
uses Dump Request (if any) and
expects the complete data
transmission in response
Ext - Receive & Transmit with Macro
MIDI If the MIDI Channel Ofs is greater than 0 then
Comm Ch the Communication Channel set in the Driver
Ofs: Window is placed in the byte
selected. The byte offset starts at 0.
(eg. Yamaha uses byte 2 for the communication
channel)
MIDI Most System Exclusive information is channel
Comm Ch sensitive. This could either be to the MIDI
Ofs: channel or some other type of channel (for
example Roland's UNIT #). The channel is called
the Communication Channel (Comm Ch) in MIDI
QUEST. This value provides a byte offset for
where the channel information is to be stored.
If the byte offset is > 0 then the communication
channel information entered in the Driver List
Window or in an Update requester is automatically
formatted into ALL system exclusive transmissions
made to the instrument.
(eg. Yamaha uses byte 2 for the communication
channel)
BANK EDIT
---------
The Bank Edit parameters control the Bank Editing Window and
Library Display. There are two additional Bank Editing parameters
which are found in the Edit Extras Requester discussed later in
this chapter. It is very important that these two parameters are
also entered properly or there will likely be problems.
Bank Edit Memory Map
The following is a memory map of a bank which will help in
entering the correct parameters to perform bank editing.
|---------------------------------|
| |
| Header Size |
|---------------------------------|
| Voice Ofs |
| |
| Voice Name Ofs |
| Voice Bytes | Voice Size (Voice 1)
| Voice Name Size |
| |
| (voice tail) |
|---------------------------------|
| Voice Ofs |
| |
| |
| Voice Bytes | Voice Size (Voice 2)
| |
| |
| (voice tail) |
|---------------------------------|
| .. |
| (data tail) |
|---------------------------------|
Bank/Library Editing Parameters
-------------------------------
The bank parameters must be set correctly for patches as well if
a Patch Library is to be created using the driver. For a Library
to be created, the number of Voices must be set to '1' and Bank
set to 'No'.
Bank: - Toggle 'Yes' or 'No'
- if this is a bank, make it 'Yes'
#Voices: The number of voices or patches in the bank
(ie 64D)
- set to 1 for a Library
VoiceSize: - TOTAL number of bytes used by each voice
- For copying, swapping and pasting Patches
- This should include all bytes relating to
a particular patch regardless of whether
they actually contribute to sound creation
Voice Name Offset: - The byte position from the start of
the sound parameters where the name is to be
found.
- the count MUST start from 0
- (eg. 0D for Tone, 145D for DX7 Voice)
Voice Name Size: - The number of characters in the Voice
- (eg. 10D)
NOTE: IF NAMES IN VOICES IS SET 'YES' THEN
SET THIS PARAMETER TO '10' (NO LARGER!!!!)
Voice Name Format: - A special entry to determine the bank
numbering scheme and accommodate non-ASCII
standard ways of storing the name
- current range is 0 -> 9
- 0) ASCII characters with 1 - > #Voices
bank numbering
- 1) ASCII characters with 0 -> #Voices - 1
bank numbering
- 2) ASCII characters with Roland 1-1 -> 8-8
bank numbering
- 3) D-50 character conversion and display
- 4) Emu Proteus format
- 5) Matrix 6/1000 character conversion and
display
- 6) MKS-50 voice format
- 7) nibblized in a regular voice format
- 8) MX-8 voice format
- 9) SQ-1 voice format
Names in Voices: - normally set to 'No'
- if the bank data does not have space for
Names within the data itself, it is necessary
to allocate memory for names by setting this
parameter to 'Yes'. Names can be given to
each patch by using the bank menu "Fill Name"
option.
NOTE: THIS IS A MEMORY ALLOCATION PARAMETER! IF THE DATA HAS ITS
OWN SPACE FOR NAMES, SET THIS TO 'NO'. IF THE BANK DOES not HAVE
SPACE FOR NAMES IN ITS OWN DATA, SET THIS TO 'YES'.
Adjust: - used for displaying banks which do not have
symmetrical data. Every "Adjust" bytes the
bank data pointer will advance by "Advance"
bytes.
Advance: - used for displaying banks which do not have
symmetrical data. Every "Adjust" bytes the
bank data pointer will advance by "Advance"
bytes.
ROLAND
------
MIDI QUEST contains special Roland System Exclusive communication
code to make working with these instruments easier. If the I/OMode (in General) is set to 'Sgl' and the Company ID# = 41H, then
the Roland parameters will become active. They MUST contain the
starting address of the data to be loaded in Roland's format.
This information is copied directly into bytes 5 -> 7 of the
request for data.
When Roland communication takes place in this mode all header and
tail bytes are stripped from the data before it is stored.
CHECK SUM
---------
If there is a check sum routine for the data, it will be run each
time before the data is sent out via MIDI (note: when using
macros this must be a component of the macro). There are four
parameters which control the Check Sum.
Type: there are five predefined check sum types
0) Yamaha format 2's complement check sum
(sum bytes and take 2's complement)
1) Nibble format where checksum is divided and
COfs stored in two bytes COfs & COfs + 1
(combine nibbles, sum bytes, nibblize to
store)
2) Nibble format
(combine nibbles, sum bytes, strip high bit,
store)
3) K1 format
(sum bytes, add A5H, strip high bit, store)
4) Regular Checksum
(sum bytes)
5) 1's Complement check sum
(sum bytes and take 1's complement)
6) VZ1 format - combine nibbles and sum
7) K5 checksum format
NOTE: If the equipment uses a checksum other than one of these,
communication will have to use a macro so that the checksum can
be customized.
#Bytes - the number of bytes to perform the checksum on
- set to 0D if there is no checksum
- if using a Nibble format checksum, the number of
bytes operated on will be double that of the
number entered as a result of the nibble format
Start - the number of bytes from the start of the data
where the checksum calculation will start
COfs - the number of bytes from the start of the data
where the calculated checksum will be stored
DUMP REQUEST
------------
In 'Sgl' mode (in General) a Dump Request will be sent before
data is requested.
# of Bytes - the number of bytes to send a Dump Request
- set to 0 if no request
- the request can be up to 20 bytes long
- (ie 5 for Yamaha DX Voice)
MIDI Req Ch Ofs- the byte offset to store the Communication
Channel making a Dump Request
- set to 0 if the data is not channelized
- remember the bytes are ordered 0->#bytes-1
- (eg. 2 for Yamaha DX Voice)
Dump Request - below the Ch Ofs there is space to enter
the data's dump request
- it MUST be entered in HEXADECIMAL
- F0 43 20 0 F7 for a Yamaha DX Voice
- note: each number must be entered
separately with a <RETURN> afterwards
RECEIVE/TRANSMIT
----------------
When I/O mode is 'Ext' a macro must be entered in Receive and
Transmit to control the collection and transmission of the
desired System Exclusive data. See the full explanation of how to
write macros below.
The macro language is covered after the Creator menu.
AUDITION
--------
When the Data is a Bank, Audition is enabled and it is possible
to enter a macro which will transmit an individual patch selected
from the bank to the instrument so it can be heard.
The selected data is passed to the Audition macro as a chunk of
memory Voice Size large. In the macro it will be necessary to
allocate a new block of memory, copy the data into the new block,
and then add the proper header and tail information (including
checksum if required) for the transmission of a patch. The newly
created patch can then be sent to the instrument.
The macro language is covered after the Creator menu.
THE CREATOR MENU
----------------
When the Driver Creator Window is active, the "Creator" menu is
available as the third menu strip. It contains five entries (four
on the PC) to aid in the development of drivers.
The entries are:
1. Compile (C)
2. To Driver List - Test (T)
3. Load Driver from Data (L)
4. Edit Extra Parameters (E)
5. Update Window (U)
Menu Item 1 - Compile (M)
1. Enter a macro or a portion thereof.
2. Select "Compile".
3. Find and correct the error if an error message results.
The "Compile" item runs a test compile on all active macros. It
is recommended that a test is run after each macro is completed
to ensure that there are not any problems.
If there is an error, a message window is displayed indicating
the line that the error occurred on, along with the character
position at which it occurred.
Menu Item 2 - To Driver List - Test (T)
1. Complete the creation of the Driver.
2. Select "To Driver List" from the menu.
3. Go to the Driver List Window.
4. The new driver will be at the bottom of the list.
5. Test it with whatever option is most appropriate.
6. If there are problems return to the Driver Creator
to correct them.
The "To Driver List - Test" item adds the new driver to the
bottom of the current driver list so that it can be tested. If it
does not work properly, it can always be deleted from the list
and you can return to the Driver Creator Window to make whatever
corrections are necessary.
PC NOTE: Because of memory restrictions, it was necessary to
place the Driver Creator and File Conversion Utilities into a
separate product so this option is not available. Once a new
Driver is complete, it should be saved to disk, load MIDI QUEST
into your computer, load the new driver and test it.
Menu Item 3 - Load Driver from Data (L)
1. Select "Load Driver From Data" from the menu.
2. Select the DATA FILE which has the desired driver.
3. The data file's driver will be loaded into the Driver
Creator Window for editing.
We at Sound Quest were determined to build all of the tools we
would need to create MIDI QUEST into MIDI QUEST. One of the
things we required was a way to access old Sound Quest drivers
which are built into our data files. This option provided that
capability. Its sole use in the normal course of events would be
a situation where you obtained a data file from someone using a
driver that you did not have and you wanted the driver for your
own use. This option will extract the driver.
Menu Item 4 - Edit Extra Parameters (E)
1. Select "Edit Extra Parameters" from the menu.
2. Edit any parameters which require it.
3. Select "Exit" to return to normal editing.
EDIT EXTRA PARAMETER
--------------------
The "Edit Extra Parameters" item opens a Requester containing 10
additional parameters which define a driver which would not fit
in the basic window. THESE PARAMETERS SHOULD ALWAYS BE CHECKED TO
ENSURE THAT THEY ARE CORRECT.
The parameters are:
Patch
The five parameters relate directly to control over the Pch#
parameter in the Driver List Window and Update Requester. This
parameter is typically used when it is possible to select which
patch is to be loaded or stored as a function of the data and/or
Dump Request. If you want the Pch# selected in the Driver List
Window or Update Requester formatted into the data, turn Patchize
on (set 'Yes')
Patchize - Toggle 'Yes' or 'No'
Patch Min - the lowest patch number which can be requested
Patch Max - the highest patch number which can be requested
Patch Ofs - the offset where the patch# is stored in the
Data
Dump Ofs - the offset in Dump Request where patch# is
stored
Bank Edit
The Bank Edit parameters control bank editing and display and
work in conjunction with the parameters displayed in the Bank
Edit portion of the Driver Creator Window. These two parameters
are very important for ALL of the bank editing functions which
deal directly with the data, such as all the randomizing
functions.
Voice Ofs - the number of bytes between the start of patch
and where the actual editable parameters start
Voice Bytes - the number of accessible bytes
The "Voice Ofs" parameter is necessary to make up the difference
between where the Header Size parameter points within the data
and where the first byte is that actually makes up the sound.
These two locations may not actually be the same since there are
sometimes informational parameters placed before the data.
The "Voice Bytes" parameter is required for all patch
randomization features. Because of the varying data storage
formats, the number of accessible bytes in a patch may not be the
same as the number of bytes used by the patch. For example, in a
nibblized format there may be 75 accessible bytes which actually
uses 150 bytes because each byte is divided into two nibblized
bytes. The "Voice Bytes" must contain the number of ACCESSIBLE
bytes.
Both of these parameters must be correctly entered to randomize
patches, move single patches into parameter edit windows, move
patches from parameter edit windows into the bank, and to
audition patches.
Comm Channels
These parameters give the maximum ranges that the Communication
Channel can assume. The parameters are used in the Driver List
Window and the Update Requester. In many MIDI instruments the
Communication Channel will be the same as the MIDI channel with a
range of 1 - 16. However, there are exceptions such as Roland LA
instruments (except D-50) which use a UNIT # that ranges from 17
- 32 and Yamaha DX7II/TX802 which use a Device # that is
independent of the MIDI Channel.
Channel Min - the lowest possible communication channel
Channel Max - the highest possible communication channel
Roland Handshake
When using Roland Communication in 'Sgl' communication mode, it
is necessary to distinguish whether data communication requiredhandshaking. This parameter controls whether it is used or not.
Handshake - toggle 'Yes' or 'No'
Prepared Format
If 'Format' is set to 'Yes' then MIDI QUEST allows an empty edit
file to be added using the "Add Empty Data File" in the Driver
List Menu. In order for MIDI QUEST to work properly however, the
driver must use macros in the extended mode and perform all SysX
header and tail formatting in the Transmit Macro. For example, a
DX7 Voice driver must add the header 'FA 5 0 {F0 43 0 1 19}'
macro and tail macro 'K 0 0 6 155 161 MX = 247 FX 162'. Note:
macros will be discussed later.
IDs
There are 2 ID parameter, 'Driver ID' and 'Link ID'. These
numbers are used to find companion drivers in the driver list and
give MIDI QUEST these important features: the ability to edit a
patch from within a bank, to disassemble a bank into a patch
library, and the ability to create a bank from a library of
patches. These functions require a patch driver to be able to
find a bank driver and vice versa. The Driver ID should be unique
for each Driver. Sound Quest reserves all driver numbers below
16,000. The Link ID should contain the Driver number of the
relative driver. For example a patch driver has the number 1200
and the Bank driver has a number 1201 then the settings would be
as follows:
Driver ID Link ID
--------- -------
Patch Driver 1200 1201
Bank Driver 1201 1200
Menu Item 5 - Update Window (U)
1. Select "Update Window" from the menu.
2. All parameters in the window will be refreshed.
All parameters are actually entered into the new driver when the
<RETURN> key is pressed. If the key is not pressed, the data will
NOT be entered. This option updates the window using the current
value of the drivers parameters to ensure they are correct.
THE SOUND QUEST MACRO LANGUAGE
------------------------------
This section will describe each of the available commands for
using macros along with an example and explanation of where the
command is likely to be used.
The MIDI QUEST program is designed so that there are no temporary
data buffers used to consume memory. Any data received via MIDI
is loaded DIRECTLY into the computer memory that will be used for
editing. There is no intermediate memory used. Because of this
design, you should be aware of getting from a command that
requests SysX from an instrument (T n or TR n) to the command
which actually receives the data (R n) quickly.
For both transmission and reception of MIDI data, you must work
in terms of COMPLETE, properly formatted MIDI messages. You can
not send a byte at a time.
The MIDI QUEST macro language has 4 variables: W, X, Y, and Z.
These can be assigned values or used as variables in place of any
parameter which would take a numeric value.
When a macro is called it is automatically given the memory
required for storing data (as defined by FileSize in the Driver).
In the case of the Receive Macro:
1. A buffer containing 'FileSize' bytes is pre-allocated.
2. R n (receive n bytes) commands automatically load data
into this buffer
3. After reception the data pointer is advanced so that
additional data can be loaded
In the case of the Transmit Macro:
1. A pointer to the data is provided
2. T n (transmit n bytes) sends the desired data
3. commands automatically advance the pointer after n bytes
have been transmitted
NOTES
-----
All character entries can be made in either upper or lower case.
When a driver is loaded from disk, any macros are automatically
uncompiled using upper case letters. (eg. TR 15 R 62).
DEFAULTS
--------
These are the values of various parameters upon macro entry
Data Pointer - points to the buffer used to load or send data
Data Size - the number of bytes in the buffer
Wait Mode - Wait for F0H to start receiving SysX information
Variable W = 0
Variable X = New value of an edited parameter(Templates only)
Variable Y = Communication Channel (Comm Ch)
Variable Z = selected patch (Pch #)
MACRO COMMANDS
--------------
Transmit Bytes
--------------
T n
where
n = number of bytes to send
n = 0 will send all bytes Pointed at by the Data Pointer (for
files of unknown length)
eg. T 163 (to send a Yamaha DX Voice)
T is used to immediately transmit n bytes via MIDI OUT starting
at the Data Pointer.
WARNINGS:
Should only be used in the Receive macro after the (S)et command
has been used to set up data to send.
NOTES:
All 3 MIDI transmit functions will automatically format in the
data's selected MIDI channel if it is a standard MIDI message or
will format in the Communication channel if the data is a SysX
message and the Communication channel offset is > 0.
Transmit Bytes on next Receive
------------------------------
TR n
where
n = number of bytes to send
n = 0 will send all bytes in the current buffer (for files of
unknown length)
eg. TR 5
TR is used to setup n bytes, starting at the Data Pointer, so
that they are transmitted immediately before the macro waits toreceive SysX bytes.
WARNINGS:
Should only be used in the Receive macro after the (S)et command
has been used to set up data to send.
Transmit Bytes from Buffer
--------------------------
B n
where
n = number of bytes to send
n = 0 will send all bytes in the current buffer (for files of
unknown length)
eg. B 5
B is used to send data from the data buffer regardless of what
the Data Pointer is set to.
WARNINGS:
Should only be used in the Transmit macro.
Receive Bytes
-------------
R n
RA x n
where
n = number of bytes to receive
n = 0 will load up to the number of bytes left in the Receive
Buffer
x = number of bytes to skip before receiving
These commands are used to receive data bytes from MIDI. Both
functions receive up to n bytes. The RA function will ignore x
bytes before it starts receiving data. This allows some
instrument responses to be ignored before the actual data is
received (necessary for KORG AI instruments).
Each receive bytes command expects only one string of SysX bytes
to be received (ending in F7H). The receiving process is ALWAYS
stopped on the receipt of an EOX end of transmission. To load two
or more blocks of SysX data it will always be necessary to make
that number of receive requests.
eg. R 200 receive and store up to 200 bytes
eg. RA 6 174 receive and ignore 6 bytes then receive and store
174 bytes
WARNINGS:
This command should ONLY be used when writing a Receive macro.
Communication Channel Offset
----------------------------
C n
where
n = the byte offset in which to place the communication channel
n = 0 do not use the communication channel
C allows the macro to control the current offset of the
Communication channel. The default, on entry to the macro, is to
use the value of the "MIDI Channel Ofs" as set in the Driver
Creator Window.
Loop
----
L n [ (macro statements) ]
where
n = the number of times to loop the macro
[ ] = macro statements to be looped
\BL\b allows a portion of the macros to be looped any number of
times. This is useful for repetitively receiving or transmitting
SysX information or to set multiple checksum values.
WARNINGS:
There can only be one loop at a time
Wait for SysX Start - Toggle
----------------------------
N
The N option toggles whether the software's MIDI SysX receive
section is supposed to wait for a SysX Start Command (F0H) or
not. By default it does, and the situations would be very rare
when this command will be used. (An exception is the reception of
Casio dumps where data must be received starting with a byte thatis NOT F0H).
Delay
-----
D n
where
n = number of microseconds
The Delay command stops the execution of the macro for n
microseconds. It can be used in any situation where the execution
needs to be slowed.
eg. An instrument can not handle the transmission of two large
SysX messages one immediately after the other. Try transmitting
one message, delay 5,000 microseconds (D 10000) and transmit the
second message. The instrument is much more likely to receive the
second transmission more accurately.
End of Macro
------------
E or ]
There are situations where it may be necessary to exit out of the
macro before the end of the macro. This can be accomplished by
entering an E or ].
(This option is more commonly used in Template macros.)
Set Data Pointer to MIDI String
-------------------------------
S n {an n byte complete MIDI message}
where
n = number of bytes in the MIDI message
This command sets the Data Pointer to the MIDI message, and all
subsequent operations which write into the data will write into
this string until it has been transmitted using the T or TR
commands.
This command can be used to create any MIDI message you want in
order to accomplish whatever your purpose is.
eg. S 5 {F0 43 20 0 F7} - Yamaha DX7 Voice Dump Request
eg. S 3 {90 60 40} - turn on note 96D with velocity of 64D
eg. S 2 {C0 02} - set up patch change message for patch2
WARNINGS:
1. The MIDI string MUST be entered in HEXIDECIMAL format.
2. You must ensure that a complete MIDI msg is being provided! In
other words, a SysX message must start with F0H and end with F7H
and a regular MIDI Message (eg. Note ON) must start with a status
byte.
3. Running Status is NOT supported.
4. The Data Pointer is literally set to a position in the
compiled macro. You must ensure that any subsequent operations,
which write into the MIDI string, stay within the confines of the
message. VERY NASTY PROBLEMS CAN RESULT OTHERWISE!
Assign Buffer
-------------
A
Force the Data Pointer to point back to the Buffer data instead
of MIDI data built into the macro. This is useful in a situation
where the (S)et command has been used but all of the data has not
been set and it is necessary to access the Data Buffer again for
either reception or transmission of data.
CheckSum
--------
K m n start len ofs
where
m = Data Format (should be the same as Storage Format)
n = Check Sum type (should be the same as in Check Sum)
start = offset from current Data Pointer position to start CSum
len = the number of bytes in the checksum calculation
ofs = offset from current Data Pointer position to store CSum
This is the macro equivalent of the 'Check Sum' portion of the
Driver Creator window. Any data which contain a check sum should
have this calculation run before transmission.
eg. K 0 0 6 155 161 (format command for DX7 voice)
Format All Bytes
----------------
FA m n {m MIDI bytes to copy}
where
m = number of bytes to format into current MIDI string
m = offset from current Data Pointer position to place the bytes
{ m bytes } = the bytes which are to be copied into the string
This command will format a string of bytes into the current MIDI
String. This option is particularly useful for the Audition macro
where a completely new message is being created.
eg. FA 8 0 {F0 41 0 16 12 4 0 0}
This example would format the correct header code necessary to
transmit a new tone to a Roland D-10.
Write a Byte (Unformatted)
--------------------------
F(W..Z) n
where
(W..Z) = any 1 of the four variables: W, X, Y, Z
n = offset from the current Data Pointer to store the data
This command takes the contents of the variable (W..Z) and stores
it in the nth byte from the current Data Pointer
eg. FW 4
This takes the contents of W and stores it in the fourth byte
from the Data Pointer.
NOTE: This command does NOT use the Storage Format (See FR).
Read a Byte (Unformatted)
-------------------------
FG (W..Z) n
where
(W..Z) = any 1 of the four variables: W, X, Y, Z
n = offset from the current Data Pointer to store the data
This command takes the contents of the variable (W..Z) and stores
it in the nth byte from the current Data Pointer
eg. FG W 4
This takes the contents of the fourth byte from the Data Pointer
and stores it in the variable W.
NOTE: This command does NOT use the Storage Format (See FS).
Math Operations
---------------
M(W..Z) op (W..Z,n)
where
(W..Z) = any 1 of the four variables: W, X, Y, Z -> destination
op is one of the following math operations:
+ (add) - (subtract)
* (multiply) / (divide)
| (bitwise OR) & (bitwise AND)
> (shift right) < (shift left)
= (equal) % (mod)
(W..Z) = any 1 of the four variables: W, X, Y, Z -> source
n = any numeric constant
The macro language has an extensive selection of macro operations
which can be performed on variables. For those of you familiar
with the 'C' language, the operations are identical. We will use
a number of examples to illustrate how the math operations work.
A table will be kept showing the contents of each variable after
the completion of each operation.
Operation Explanation Var W X Y Z
-------------------------------------------------------------
START 1 6 3 0
MW = 3 : W takes on the value 3 3 6 3 0
MX = Z : X takes on the value of Z 3 0 3 0
MX + 1 : add 1 to X 3 1 3 0
MW + Y : add contents of Y to W 6 1 3 0
MW / Y : divide W by Y 2 1 3 0
MY < 4 : bit shift Y left 4 2 1 48 0
MY | 21 : 00010101 | 00110000 -> 00110101 2 1 53 0
MX < 7 : bit shift X left 7 2 128 53 0
MX > 2 : bit shift X right 2 2 32 53 0
MY & 21 : 00110101 & 01010101 -> 00010100 2 32 20 0
MX % Y : X mod by contents of Y 2 8 20 0
WARNING:
You should NOT attempt to divide a variable by 0.
Delay MIDI transmission
-----------------------
DM n
where
n = every nth byte to delay on
This command slows the MIDI transmission rate to accommodate
synthesizers which can not receive transmissions at full MIDI
rate. This command will slow SysX transmission so that for every
nth byte there is a 10 millisecond delay before transmission
recommences.
eg DM 20
Delay 10 milliseconds every 20th byte transmitted.
WARNING:
If this type of transmission is required for a particular
instrument to function properly, the sequencer should NOT be run
while communication of this type is taking place!
Receive Data Unstored
---------------------
RB n
where
n = the number of bytes to receive (between 1 and 100)
This command is used when data must be received from an
instrument and it is not to be kept. The data is read and stored
in a temporary buffer and immediately dumped.
eg. RB 52
Read 52 bytes into the temporary buffer and dump.
Global Commands
---------------
GA n - allocate n bytes of memory
GN - set Data Pointer to the new memory
GO - set Data Pointer to the old memory
GR - reset Data Pointer to start of new memory
GC m p q - copy block of bytes from old mem to new
GF n - free the allocated memory
where
n = number of bytes
m = number of bytes offset from the start of the old memory
p = number of bytes offset from the Data Pointer
q = number of bytes to copy from the old memory into the new
memory
All of the operations in this section are usually used in the
Audition macro and in the File Conversion macros which can be
used to convert other manufacturers files to Sound Quest format
files.
GA is used to allocate the memory necessary to create a complete
patch from a bank, usually n will equal the complete byte size of
the patch.
GN is used after the memory has been allocated and sets this
memory for use by the other Data Pointer related operations.
GO is used to set the Data Pointer back to the original data so
that it can be operated on if necessary.
GR is used to reset the Data Pointer to the beginning of the
allocated memory so that it can be reused if desired. This
function will probably be used if there is a loop in the Audition
macro.
GC is usually used to copy the sound data from the bank into the
newly allocated data which will be used for the audition.
GF is used to free the memory - this should be called before
exiting the macro.
Here is an example which incorporates most of the functions in
this section and is drawn directly from the D-10 Tone Audition
macro. It is the complete code to prepare and transmit the data.
GA 256 - allocate memory
GN - make memory active
FA 8 0 {F0 41 0 16 12 3 0 0 } - format in header
GC 0 8 246 - copy in body
K 0 0 5 249 254 - generate checksum
MX = 247 - set F7H end
FX 255 - copy F7H into end
T 256 - transmit complete tone
GF 256 - free the data
WARNING:
DANGER! When using GC ensure that the copy does not exceed the
available buffer space.
Read Byte from Data (Formatted)
-------------------------------
FR (W..Z) ofs
where
(W..Z) = one of four variables: W, X, Y, Z
ofs = offset from the data pointer to get the data
This command reads a byte of data out of the buffer currently
pointed to by the Data Pointer. The command uses the Storage
Format parameter when reading the data so that if the data is in
a non-standard format such as nibblized or in M1 format, this is
accounted for and the complete byte is read and provided. This
command is more commonly used in Template macros but could be
used for other purposes.
eg. FR W 4
This reads the fourth byte offset from the Data Pointer into the
variable W.
The complement of this command is FS W 4.
WARNING:
Ensure that the byte read is within the current buffer.
Store Byte in Data (Formatted)
------------------------------
FS (W..Z) ofs
where
(W..Z) = one of four variables: W, X, Y, Z
ofs = offset from the data pointer to store the data
This command stores data in a variable into a location offset
from the buffer currently pointed to by the Data Pointer. The
command uses the Storage Format parameter when storing the data
so that if the data is in a non-standard format such as nibblized
or in M1 format, this is accounted for and the complete byte is
stored appropriately. This command is more commonly used in
Template macros but could be used for other purposes.
eg. FS X 10
This command stores the value in W in the tenth byte offset from
the Data Pointer.
The complement of this command is FR X 10.
WARNING:
DANGER! Ensure the offset does not exceed the size of the data
Disk Read
---------
DR n ofs
where
n = the number of bytes to read from the current disk file
ofs = where to load the data relative to the Data Pointer
This command reads a block of n data bytes from an open disk file
and stores it in memory with a Data Pointer offset of 'ofs'. This
command is necessary for converting files from other
manufacturers.
eg. DR 155 6
Read 155 bytes and store it starting 6 bytes from the Data
Pointer.
WARNING:
1) This command should ONLY be used in a File Conversion macro
created in the File Conversion Window!
2) DANGER! Ensure the data read is not larger than the available
buffer size!
Disk Seek
---------
DS n
where
n = the number of bytes to advance
This command moves the position of the disk file pointer forward
n bytes so that data can be read from the middle or end of a
file. Not all companies use the same file format so it is
necessary to be able to move anywhere in the file to collect the
data necessary to create a Sound Quest file of the same type.
eg. DS 166
Advance the disk file pointer 166 bytes.
WARNING:
1) This command should ONLY be used in a File Conversion macro
created in the File Conversion Window!
Conditional Execution
---------------------
IF (W..Z) - execute code if variable is NOT equal 0
IFN (W..Z) - execute code if variable is equal 0
IFL (W..Z) - execute code if variable is less than 0
IFG (W..Z) - execute code if variable is greater than 0
IFE - end any conditional execution
where
(W..Z) is one of four variables: W, X, Y, Z
These commands allow execution of macro code only if certain
requirements are met. This commands are far more commonly used
when writing Template macros. They allow the limitation of
certain actions based on the state of variables. If a test fails,
all macro code is ignored until the first IFE command is executed
and operation returns to normal.
NOTE: If IFE is used at the very end of a macro, an error is
generated. Enter E or ] to end the macro correctly.
PC MPU mode commands
--------------------
ND - enter MPU dumb mode
NI - enter MPU intelligent mode
There are a number of limited circumstances where it is
absolutely necessary to enter the MPU dumb mode in order to
receive or transmit the required data. Two of these are
transmitting and receiving Casio SysX information and Receiving
large Ensoniq sequence dumps.
If your macro causes the MPU to enter dumb mode, ensure that it
is reset to intelligent mode before exiting the macro.
NOTE: The macro compilers on other computer systems are capable
of ignoring these commands.
WARNING:
PC MPU users MUST NOT be running the sequencer when executing
these macros.
Examples
Here are a number of macro examples drawn directly from existing
Sound Quest Drivers, with explanations:
M1 Combination Bank Receive Macro
S 7 {F0 42 30 19 1D 1 F7} - set the dump request
TR 7 - transmit bytes on next receive
R 14179 - receive M1 Combination bank
M1 Combination Bank Audition Macro
----------------------------------
S 8 {F0 42 30 19 4E 1 10 F7} - set M1 in Combination edit
T 8 - transmit the message
D10000 - delay 10 ms. to allow response
GA 148 - allocate memory for audition
GN - set new memory for work
FA 5 0 {F0 42 30 19 49} - setup Single Combination header
GC 0 5 124 - copy the combination data
MX = 247 - set X = 247 (F7H) end of SysX
FX 147 - put F7H into last byte
T 148 - transmit the 148 bytes
GF 148 - free the allocated memory
FB01 Patch Bank Transmit Macro
------------------------------
NOTE: Each Patch has its own Check sum which must be
recalculated.
MW = 76 - set offset to start of the first
checksum to be calculated.
MX = 204 - set offset to store first the
checksum.
L 48 [ - loop for each of 48 patches
K 0 0 W 128 X - calculate Patch's checksum
MW + 131 - advance W to next patch
MX + 131 - advance X to next patch
] - end of loop
T 6363 - transmit the bank
THE FILE CONVERSION WINDOW
==========================
WARNING! TO USE THIS WINDOW YOU SHOULD:
1. Have a knowledge and understanding of hexadecimal.
2. Be able to spot relevant SysX data in a file.
3. Be able to create complete SysX messages.
4. Be able to read and understand the System Exclusive
implementation charts of your instrument.
The File Conversion Window is used to convert files from other
manufacturer's formats into Sound Quest's file format so that
they can be used by MIDI QUEST. Before starting this process, you
should contact Sound Quest either through our support line or our
BBS to find out whether there is already a macro available to
convert your files.
The steps to converting a file are as follows:
1. Open the File Conversion Window.
2. Determine the file format of the old file to convert.
3. Load the Sound Quest Driver for the data into the window.
4. Write a macro that reads & converts the old file.
5. Select "Convert File to SQ" OR "Convert Directory to SQ".
6. Load the new data file to ensure proper conversion.
7. "Save" the new conversion macro to disk for later use.
NOTE: With an existing conversion macro replace 3,4,5 with 8.
8. "Open" an existing file conversion macro.
Step 1 - Opening the File Conversion Window.
--------------------------------------------
MAC, AMIGA, ATARI ST, WINDOWS
Use the following steps to access the File Conversion Window:
1. Bring down the "Utilities" menu.
2. Select "File Conversion Window" (item 8).
PC/XT/AT/PS 2
In order to save memory, it has been necessary to put the File
Conversion Window into a separate program called DRVCREAT.EXE. On
a hard drive system, this program will be installed in the MIDI
QUEST directory. On a floppy only system, the program will be
found on Disk #2.
Use the following steps to access the File Conversion Window:
1. Save whatever data you have loaded into MIDI QUEST.
2. Quit the program.
3. Insert Disk #2 on a floppy system.
4. Execute METASHEL /i<RETURN>
5. Execute DRVCREAT <RETURN>.
6. Close the Driver Creator Window (select Close icon).
7. Pull down the "Windows" menu.
8. Select "Conversion Window" (item 2).
If this is the first time running the program you will beprompted to enter the identical information as was requested when
MIDI QUEST was first started (graphics adaptor and MPU interrupt
number). See the "Getting Started" section of the manual if a
refresher is needed.
Step 2 - Determining the File Format
------------------------------------
The Sound Quest format file stores much more than just the System
Exclusive information. It also stores comments, file search
codes, and information on how the data is to be transmitted.
Sound Quest's file format also stores complete MIDI System
Exclusive messages unlike many other manufacturers which only
store the data.
Before attempting to analyse a manufacturer's file format,
contact Sound Quest to determine whether a macro has already been
written for the particular data.
The format of another manufacturer's file can be determined in
one of these ways:
1. The format is printed in the manufacturer's manual.
2. Use the "Load File to SysX View" menu item to load the
file and search for the data within the file.
3. Use some other program or utility you own to view the
file and analyse its contents.
Assuming that you must determine the manufacturer's file format,
here is one of the best ways to to it:
1. Load file into MIDI QUEST using "Load File to SysX View"
2. Search for names stored within the file.
3. Compare the position of the name(s) in the file to where
they are stored in the data and work backwards to
determine where the data starts.
4. This method assumes that the SysX data has not been
"converted" in any way.
Step 3 - Loading the Sound Quest Driver
---------------------------------------
The Sound Quest Driver must be loaded into the File Conversion
Window because this information is an integral component of every
Sound Quest Data File. It also tells the File Conversion Window
what kind of data is being converted. A driver can be obtained
from two locations, directly from disk or from the Driver List
Window (not available on PC).
Loading the Driver from disk:
1. Select on the File Conversion Window to activate it.
2. Display the Convert menu.
3. Select the "Load Driver From Disk" item.
4. Use the displayed File Requester to select the driver.
5. Select OK to load the driver.
6. The driver name will appear below "Convert to:".
Loading the Driver from the Driver List:
1. Display the Driver List Window (if necessary).
2. Select the Driver to load into File Conversion.
3. Select on the File Conversion Window to activate it.
4. Display the Convert menu.
5. Select the "Load Driver From List" option.
6. The selected driver will appear below "Convert to:".
NOTE: This option is not available to PC users since the File
Conversion Window is in a separate program.
Step 4 - Write a Macro Conversion
---------------------------------
Clicking the mouse BELOW the "Macro:" title will activate a
cursor where the file conversion macro is entered. When the
conversion process is started, MIDI QUEST automatically opens the
selected data file for reading AND allocates the memory required
for a file using this driver.
Every conversion macro will vary according to the specific
manufacturer and the type of data which is being converted but as
a general rule the steps will occur in this order:
1. Advance the disk file to where the SysX data is (DS n).
2. Read the SysX data from old file -> new file (DR n x).
3. Add SysX header if necessary (FA 6 0 {F0 43 0 0 1 1B}).
4. Add SysX tail if necessary.
NOTE: the bracketted commands show the relevent macro commands
which accomplish the required function where n and x are some
numeric value.
It may, of course, be necessary to perform multiple disk seeks
and reads as well as a wider range of formatting. Obviously it
will be necessary to read the section describing the macro
language extensively.
WARNING: Make sure that the DR macro call reads data into the
allocated memory and NOT beyond or nasty problems can result. The
same warning holds true for the FA macro command.
Step 5 - Convert the File
-------------------------
To convert the file, select either "Convert File to SQ" or
"Convert Directory to SQ". MIDI QUEST takes the following steps:
1. Opens a File Requester.
2. Choose the file to convert and Select "Ok".
3. A data file is allocated for the Conversion Driver.
4. The selected disk file is opened and prepared.
5. The macro is executed.
6. The Sound Quest file is saved to disk with .SQ extension.
7. If directory processing Loop to #3 for all files.
WARNING: If a directory of files is being converted, ALL of the
files in that directory MUST be of the same type.
WARNING: If there are two or more files with the same name but
different extensions, all of the converted files will be lost
except the last one converted. The files should be renamed before
the conversion process is started.
Step 6 - Load the New File to Verify
------------------------------------
After the files have been converted, the new files should be
loaded to ensure that the process proceeded properly. This is
particularly important when you have just written your own
conversion macro.
Take the following steps:
1. Bring down the "Windows" menu.
2. Select the "Edit Window" item.
3. A File Requester will appear.
4. Select the newly created data file and press "Ok".
5. Verify that the data has been converted properly.
6. Transmit the data to your instrument.
7. Verify the data aurally.
Congratulations, you have successfully converted file formats.
Step 7 - Save the Conversion Macro
----------------------------------
Once the conversion macro has been tested, you can save it to
disk for later use. When the macro is saved to disk, the Driver
file in use is also saved with the macro and is automatically
loaded with the macro.
Take the following steps to save the macro:
1. Activate the File Conversion Window (click mouse on it).
2. Display the "Files" menu.
3. Select the "Save As... " item.
4. Enter a name for the macro.
5. Select "OK" to save the macro.
Step 8 - Load a Conversion Macro
--------------------------------
If you want to use a conversion macro you have written and saved
or received from someone else, follow these steps to load it:
1. Select on the File Conversion Window to activate it.
2. Display the "Files" menu.
3. Select the "Open" item.
4. Use the File Requester to select the macro.
5. Press "OK" to load the macro.
6. MIDI QUEST will load the selected macro for use.
NOTE: the conversion macro file does not actually save the Sound
Quest Driver it is using, only a path to where that driver is
located on disk. If you obtain a conversion macro from someone
else, make sure that you either have the requisite driver
yourself or you obtain the driver as well.
THE CONVERT MENU
================
When the File Conversion Window is active, the "Convert" menu is
available as the third menu strip. It contains four items (three
on the PC) used in creating conversion macros.
The Menu Items are:
1. Compile (M)
2. Load File to SysX View (T)
3. Load Driver From Disk (L)
4. Load Driver From List (E)
Menu Item 1 - Compile (M)
1. Enter a macro or a portion thereof.
2. Select "Compile" from the "Convert" menu.
3. Find and correct the error if an error message results.
The "Compile" item runs a test compile on the conversion macro.
This option should be run before trying to convert a file from
one format to the Sound Quest format. If there is an error, a
message window is displayed indicating the line that the error
occurred on, along with the character position at which it
occurred.
Menu Item 2 - Load File to SysX View (T)
----------------------------------------
1. Select "Load File to SysX View" from the "Convert" menu.
2. A File Requester will be displayed.
3. Choose the file to be converted.
4. The entire file will be loaded into a SysX View Window.
This option provides an effective way to load an ENTIRE foreign
data file into MIDI QUEST for viewing in both hexadecimal and
character formats. Keep in mind that this is NOT A TRUE DATA FILE
and should NOT be saved from the SysX View Window.
Once the data has been placed in the SysX View Window, the window
can be used to find the location of relevant data and greatly
assists in the creation of conversion macros.
WARNING: Do NOT abuse the capability of loading foreign data
files into MIDI QUEST unconverted. They should be used only for
viewing. The program can not understand them in any other way. We
are not reponsible for the results if they are.
Menu Item 3 - Load Driver From Disk (L)
---------------------------------------
1. Select "Load Driver From Disk" from the "Convert" menu.
2. A File Requester will be displayed.
3. Choose the driver to be loaded.
4. The driver will be loaded into File Conversion Window.
When a new macro is being written, the File Conversion needs a
driver to know what kind of data file it will be creating. This
option enables any driver to be loaded from disk.
Menu Item 4 - Load Driver From List (E)
---------------------------------------
1. Display the Driver List Window if necessary.
2. Select the driver for the File Conversion Window.
3. Select "Load Driver From List" from the "Convert" menu.
4. The driver will be copied into File Conversion Window.
When a new macro is being written, the File Conversion needs a
driver to know what kind of data file it will be creating. This
option enables any driver in the Driver List Window to be copied
into the File Conversion Window.
NOTE: This option is not available for PCs since a separate
program is used for file conversions.
MIDI COMMUNICATION ERRORS
=========================
These errors are all generated while attempting to either
transmit or receive System Exclusive information. Before
attempting to deal with the particular error, you should verify
this information:
1. Communications channels for data and instrument match.
2. SysX communication is ENABLED for the instrument.
(It is possible to shut off SysX on many instruments)
3. Check that the Patch Bay is properly mapped to the
instrument.
4. All requirements & warnings in Fast Tips have been met.
5. Connect the instrument DIRECTLY to the computer.
6. ie. No merge boxes, mappers, etc. are connected.
7. Retry the communication.
If after checking all of these possibilities an error is still
being generated, it will be necessary to check out the particular
error. The "Possible Causes" listed below will not include those
already covered!
In the listings below, the problem causes are listed in order of
greatest to least likely. You should try to sort out the problem
based on the order of this listing.
NOTE: If you are working on a new driver, it is much more likely
that there is an error in the driver. Concentrate on correcting
the driver parameters. While the listings below include errors
resulting from an incorrect driver, it considers them to be
improbable and so usually they are listed at the bottom. CHECK
THESE OUT FIRST!
ERROR! MIDI Unit did not respond!
---------------------------------
Possible Causes:
1. The driver dump request is incorrect.
2. The MIDI Channel Ofs (Communication Channel Ofs) is incorrect.
3. Instrument did not respond within timeout period.
NOTE: Cause 3 (though very unlikely) should only occur in systems
which require a polled MIDI reception scheme. The only polled
reception currently used is with an ATARI ST running under CLab's
Director.
Solutions:
1. Verify and correct if necessary.
2. Verify and correct if necessary.
3. Load the macro into the Driver Creator Window and add a small
delay in the Receive Macro between transmitting the dump request(T n) and receiving the data (R n).
ERROR! End of SysX not received (TimeOut)!
------------------------------------------
Possible Causes:
1. The wrong dump request is being used for the expected data.
2. Instrument did not complete transmission within the timeout
period.
NOTE: Cause 2 (though very unlikely) should only occur in systems
which require a polled MIDI reception scheme. The only polled
reception currently used is with an ATARI ST running under CLab's
Director.
Solutions:
1. Verify and correct if necessary.
2. Load the macro into the Driver Creator Window and make sure
that the TR n macro command is used for transmitting any dump
request messages.
ERROR! SysX missing bytes!
--------------------------
Possible Causes:
1. A byte was lost by the MIDI receive circuitry.
2. Driver has an incorrect "FileSize" entry ('Sgl' mode).
3. Macro Receive call has incorrect # of bytes ('Ext' mode).
4. Driver is expecting a fixed length MIDI message when the
message is infact a variable length.
Solutions:
1. Retry the MIDI operation.
2. Verify and correct the "File Size" entry if necessary.
3. Verify and correct R n or RA x n macro calls if necessary.
4. Take generic dump into SysX View Window and verify file size
or make "Fixed Length" 'No' if this is the case.
NOTE: When "Fixed Length" is 'Yes', every SysX reception
undergoes a number of tests to determine whether valid data was
received.
ERROR! Unexpected end of Macro!
-------------------------------
Possible Causes:
1. The Data Pointer has been set into the macro (use S cmd) and
you are then writing beyond the size of the MIDI string.
Solutions:
1. Load and check your macro very carefully if your computer has
not already crashed.
ERROR! Unexpected Macro Command
-------------------------------
Possible Causes:
1. The macro was written on a newer version of MIDI QUEST which
has an enhanced macro language.
2. The Data Pointer has been set into the macro (use S cmd) and
you are then writing beyond the size of the MIDI string.
Solutions:
1. Contact Sound Quest, report the problem and we will attempt to
determine whether this is the problem.
2. Load and check your macro very carefully if your computer has
not already crashed.
ERROR! No EOF transmission found!
---------------------------------
Possible Causes:
1. A byte was lost by the MIDI receive circuitry.
2. Driver has an incorrect "FileSize" entry ('Sgl' mode).
3. Macro Receive call has incorrect # of bytes ('Ext' mode).
4. Driver is expecting a fixed length MIDI message when the
message is in fact a variable length.
Solutions:
1. Retry the MIDI operation.
2. Verify and correct the "File Size" entry if necessary.
3. Verify and current R n or RA x n macro calls if necessary.
4. Take generic dump into SysX View Window and verify file size
or make "Fixed Length" 'No' if this is the case.
NOTE: When "Fixed Length" is 'Yes' then every SysX reception
undergoes a number of tests to determine whether valid data was
received.
ERROR! Incorrect Company ID!
----------------------------
Possible Causes:
1. Error during MIDI communication.
2. An instrument responded which should not have.
3. The incorrect "Company ID" was entered in Driver.
Solutions:
1. Retry the MIDI communication.
2. Ensure the correct instrument is connected to the computer.
3. Verify and correct the "Company ID" - IN HEX!
----------------------------------
ERROR! Unexpected ACK recvd!
ERROR! Roland Communication Error!
ERROR! Unrecognized Roland Error!
----------------------------------
Possible Causes:
1. Error during MIDI communication.
2. Error in the instrument's ROM software.
Solutions:
1. Retry MIDI communication.
2. Check Fast Tips to see if there are any known problems.
2. Contact Roland to determine whether the latest software is
being used. If you are not using the latest software, have
your ROMS replaced.
NOTE: This error can only be generated by ROLAND communication.
ERROR! SysX Data Rejected!
--------------------------
Possible Causes:
1. Error in MIDI communication.
2. Instrument is in the wrong mode for the desired communication.
3. Error in the instrument's ROM software.
Solutions:
1. Retry MIDI communication.
2. Check Fast Tips to see if there are any known problems.
2. If the driver uses handshaking - set communication properly.
2. If no handshaking - ensure instrument is not in that mode.
3. Contact Roland to determine whether the latest software is
being used. If you are not using the latest software, have
your ROMS replaced.
NOTE: This error can only be generated by ROLAND communication.
ERROR! Incorrect # of bytes received!
-------------------------------------
Possible Causes:
1. Error during MIDI communication.
2. Error in the instrument's ROM software.
Solutions:
1. Retry MIDI communication.
2A. Check Fast Tips to see if there are any known problems.
2B. Contact Roland to determine whether the latest software is
being used. If you are not, have your ROMS replaced.
NOTE: This error can only be generated by ROLAND communication.
ERROR! Dump Too large for allocated memory!
-------------------------------------------
Possible Causes:
1. A driver for a variable length SysX dump only made a partial
memory allocation to save memory. The instrument sent more bytes
than were allocated.
Solutions:
1. There will usually be a driver with a larger "FileSize" (which
controls memory allocation). If not, increase the driver's
"FileSize" using the Driver Creator Window.
ERROR! Memory Allocation Failed!
--------------------------------
Possible Causes:
1. When a driver does not have a fixed length (ie "Fixed Length"
is 'No'), then after SysX data is received a new buffer is
allocated which is the same size as the number of bytes received.
If the allocation of the new buffer fails, this error is
generated.
Solutions:
1. Make more memory available to the computer for this buffer by
closing as many windows as is necessary to correctly receive the
data.
DISK ACCESS ERRORS
------------------
------------------
These errors are all generated while attempting to save or read
data from disk.
As with the MIDI communication errors, the possible causes are
presented in the order in which they are most likely to occur.
File NOT Found!
---------------
Possible Causes:
1. The path contains an invalid path.
2. The file name was entered incorrectly.
3. The file is not stored in the selected directory.
Solutions:
1A. Check that the path is valid.
1B. Click the mouse in the path string to activate it. Hit the
<RETURN> key to display all of the files in the directory. If no
files are displayed, the path is probably invalid and should
be re-entered.
2. Use the Up and Down Arrows or the slider to display the
desired file. Double click on it to load.
3. Using #2 will determine whether the file is stored in the
directory.
File READ Error!
----------------
Possible Causes:
1. The file has somehow been corrupted.
2. Hardware access error.
Solutions :
1. If you have a program that checks the integrity of a disk, run
it on the disk which contains the problem file.
2. Save your current work. Shut the computer off and restart it.
Try loading the file again.
NOTE: ALWAYS KEEP BACKUPS OF ALL FILES ON A SEPARATE DISK!
Not an IFF File!
----------------
Possible Causes:
1. The selected file does not use the storage format MIDI QUEST
uses and was not created by MIDI QUEST.
2. The file has been corrupted.
Solutions:
1A. The wrong file was probably selected by mistake so select a
different file.
1B. The file was created by a different software package and
requires file conversion.
2. Load the data from a backup disk.
Not an IFF Data File!
---------------------
Possible Causes:
1. The selected file contains some kind of information other than
data.
Solutions:
1. Select a data file.
Not an IFF Driver File!
-----------------------
Possible Causes:
1. The selected file contains some kind of information other than
a Sound Quest MIDI driver.
Solutions:
1. Select a Sound Quest MIDI driver file.
File NOT a Data Base!
---------------------
Possible Causes:
1. The selected file contains some kind of information other than
a data base.
Solutions:
1. Select a data base file.
Directory NOT Found!
--------------------
Possible Causes:
1. The name path of a directory on the disk was entered manually
and incorrectly.
Solutions:
1A. Correct the mistake (typo) in the path retry.
1B. Enter only the disk name and use the mouse to select
directories to make the path.
Insufficient Memory!
--------------------
Possible Causes:
1. The computer did not have sufficient memory to load the entire
file.
Solutions:
1A. Close some already open windows to free sufficient memory to
load the file.
1B. If this is a consistent problem and you are loading banks,
consider turning 'Keep Backup' Off in the Options menu.
File WRITE Error!
-----------------
Possible Causes:
1. There is insufficient disk space to save the file.
2. There is a hard error on the disk.
3. There is a hardware problem.
Solutions:
1. Try saving to a different disk.
2. Try saving to a different disk.
3. Try saving to a different disk in a different drive.
File CREATION Error!
--------------------
Possible Causes:
1. An unacceptable file name was used (ie unacceptablecharacters).
2. The file is being saved to a directory which does not exist.
3. The file being written to has been given READ ONLY status.
Solutions:
1. Give the file a valid operating system name.
2. Verify that the destination directory is valid.
3. If a file of the same name already exists, verify its
READ/WRITE status.
MACRO ERRORS
------------
------------
These errors are all generated while attempting to compile a
macro for a driver, a template or a file conversion. The error
message is provided along with the line that the error was found
in and the character position.
As with the MIDI communication errors, the errors are presented
in the order in which they are most likely to occur.
Destination Buffer Exceeded!
----------------------------
Possible Causes:
1. Some macro command was entered improperly and the compiler has
missed it. (This is the much more likely of the two.)
2. The macro is so incredibly long that it has used up the
available buffer space (currently 1000 bytes for each macro).
Solutions:
1. There is an error somewhere in the macro, unfortunately you
will have to look a little to find it. To test this methodically,
use a letter which is definitely NOT a command such as 'H'.
Insert the H in the code. Compile the macro. A "Bad Macro
Command" error will occur. Continue moving the 'H' through the
macro until the "Destination Buffer Exceeded" error is generated
instead of the error for a bad macro command.
2. Find ways to optimize the macro by using the loop and
conditional execution commands.
Unknown Character
-----------------
Possible Causes:
1. An invalid macro command was entered at the given location.
2. An extension to the IF command was invalid
(ie NOT IFN, IFE, IFG, or IFL)
3. The compiler could not process the character in the position
it was found.
Solutions:
1. Check the position and enter the correct macro command.
2. Enter the correct conditional execution command.
3. Check the code in the area where the error was generated very
closely.
Invalid Value
-------------
Possible Causes:
1. A hex value was entered which exceeded 255
2. A 'Set' command was used which described a MIDI string with
more bytes than were actually entered.
Solutions:
1. Check to see that the entry at the error point is less than
FFH or 255D.
2. If a MIDI string of 8 is set (ie. S 8 { }) ensure that there
are actually eight MIDI bytes entered in the string.
Invalid Math Operation
----------------------
Possible Causes:
1. An invalid math operation was entered.
Solutions:
1. Check the error position and enter a valid math function.
Invalid Assignment Opcode
-------------------------
Possible Causes:
1. The second character of an opcode is invalid at the error
position.
Solutions:
1. Check the error position and enter the valid op code.
(eg GA and GF are valid but GH is not)
End of Macro Buffer
-------------------
Possible Causes:
1. An IFE command can not be the last command in a macro.
2. The compiler has reached the end of the Macro Buffer
unexpectedly.
Solutions:
1. Enter an end of macro command after IFE (either ']' or 'E').
2. This is a very insidious problem in the macro. Use the method
described in the "Destination Buffer Exceeded" error to find it.